<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //reverse作用：是用来反转数组使用的 (改变数组)
        // 参数：
        // 返回值：数组本身
        var arr = [3, 1, 2];
        var brr = arr.reverse();
        console.log(arr);
        console.log(brr);

        //sort作用：排序 (改变数组)
        // 参数：
        // ------不传参数----按照元素的每一位的字典大小 升序
        // ------参数----是一个函数
        // 先比第一位，第一位相等就比第二位
        // 返回值：数组本身

        var arr2 = [3, 12, 2];
        var brr2 = arr2.sort()
        console.log(arr2);//[11, 2, 3]
        console.log(brr2);//[12, 2, 3]

        console.log(['a1', 'a0', 'c1'].sort());//['a0', 'a1', 'c1']
        console.log([11, 12, 2].sort());// 2 是三个元素中第一位最大的


        // js中函数 一等公民-跟变量一样，

        var arr3 = [3, 11, 2]


        // 下面的的写法，会把数组中元素，按照 数字大小 做升序
        var fn = function (a, b) {
            return a - b;
        }
        // 下面把 fn函数的调用结果 作为 参数
        // arr3.sort(fn())
        // 下面是把函数作为参数
        // arr3.sort(fn)

        // 下面是把函数作为参数

        // arr3.sort(function (a, b) {
        //     return a - b;
        // });
        console.log(arr3);//[2, 3, 11]

        // 下面的的写法，会把数组中元素，按照 数字大小 做降序
        // arr3.sort(function (a, b) {
        //     return b - a;
        // })

        console.log(arr3);//[11, 3, 2]



        var arr4 = [3, 11, 2]
        // sort 函数内部，让相邻的两个数字 依次比较，发现位置跟升序不一致，就交换两个位置上的元素
        // 参数是一个函数，这个函数是 数组在排序时候的比较的规则
        arr4.sort(function (a, b) {
            //a b 是数组中的元素
            // 参数-执行了好多次，
            // 第一次是11 3  
            // a后一个元素
            // b 是前一个元素
            // return 是后一个减前一个元素 
            // ***规则--如果return的是大于0的数字，内部不会交换 两个元素位置
            // 如果return的是小于0 就会交换 两个元素的位置
            console.log(a, b);
            // return a - b
            return a - b
        })

        var stuArr = [
            { name: 'zhangsan', age: 18 },
            { name: 'lisi', age: 17 }];
        //数组中元素按照年龄升序
        stuArr.sort(function (a, b) {
            //a b数组的元素
            return a.age - b.age;
        })


        var arr = [1, 2, 3, 4];
        // 乱序
        arr.sort(function () {
            // Math.random() 》 0-1  -0.5 
            // 一半可能是整数，一半可能是负
            return Math.random() - 0.5;
        });
        console.log(arr);








    </script>

</body>

</html>